package com.example.demo1;

import java.util.ArrayList;
import java.util.List;

/**
 * 具体的观察目标类
 */
public class ConcreteSubject implements Subject {

    // 定义几何,存储所有的观察者对象
    private List<Observer> observerList = new ArrayList<>();

    // 注册方法,向观察者集合增加观察者
    @Override
    public void attach(Observer observer) {
        observerList.add(observer);
    }

    //注销方法,向观察者集合删除观察者
    @Override
    public void detach(Observer observer) {
        observerList.remove(observer);
    }

    //通知所有的观察者对象
    @Override
    public void notifyAllObserver() {
        // 遍历集合 调用每一个观察者的响应
        observerList.forEach(observer -> {
            observer.update();
        });
    }
}
